In an HEVC three-dimensional extension framework of a High Efficiency Video Coding (HEVC) standard-compatible Three-Dimensional Video (3DV) coding standard 3D-HEVC which is being formulated, Simplified Depth Coding (SDC) can effectively improve the efficiency of coding depth information with less calculation complexity. In an SDC module of a coder, the value of an input depth sample may be mapped to an index number of the depth sample value by employing Depth Look-up Table (DLT), so that the bit depth of depth samples is reduced to bring further improvement to the overall coding efficiency. In addition, a coder needs to write the DLT into a bitstream.
The 3D-HEVC standard writes DLT information into a bitstream by virtue of a direct coding method, and a decoding process is as follows.
The decoding process is: for a depth component, a decoder parses a value of dlt_flag from an input bitstream at first; when the value of dlt_flag is equal to 1 (that is, DLT is used), the decoder further parses a value of num_depth_values_in_dlt, and then the decoder parses values (dlt_depth_value[i] [j]) of num_depth_values_in_dlt DLT elements.
Corresponding to the decoding process, a coding process is as follows.
The coding process is: when the depth component is coded, a coder writes dlt_flag into a bitstream at first; and when the value of dlt_flag is equal to 1 (that is, DLT is used), the coder writes the number of depth numerical values included in the DLT into the bitstream, and then the coder writes the value of each element (dlt_depth_value[i] [j]) in the DLT into the bitstream in sequence.
In order to improve coding efficiency of DLT information, a proposal document JCT3V-C0142 proposes a Range Constrained Bit Map (RCBM) method. According to the method, a minimum value and a maximum value (represented by a difference between the maximum value and the minimum value) in a DLT are coded at first, and then whether each depth value between the minimum value and the maximum value is in the DLT or not is represented by a bit map consisting of a series of one-bit flags.
A DLT decoding process for the RCBM method is as follows.
The decoding process is: for a depth component, a decoder parses a value of dlt_flag out from an input bitstream; and when the value of dlt_flag is equal to 1 (that is, DLT is used), the decoder parses a value of code_full_bit_depth_map_flag, when the value of code_full_bit_depth_map_flag is 0, the minimum depth sample value in the DLT is set to be 0 and the maximum depth sample value in the DLT is set to be the allowable maximum value (for example, when bit depth of depth sample is 8, the value is 255), and on the contrary, when the value of code_full_bit_depth_map_flag is 1, the decoder parses the minimum value of the depth sample and the difference between the maximum value and the minimum value in the DLT from the input bitstream, and sets the maximum value and the minimum value. Within the DLT value range indicated by the minimum value and the maximum value, the decoder parses flag bits indicating whether each value is included in the DLT or not within the value range, and adds depth sample values with flag bit values equal to “1” in the DLT array.
Corresponding to the decoding process, a coding process for the RCBM method is as follows.
The coding process is: when the depth component is coded, a coder writes dlt_flag into a bitstream at first; when the value of dlt_flag is equal to 1, the coder writes code_full_bit_depth_map_flag into the bitstream; when the value of code_full_bit_depth_map_flag is 0, the minimum depth sample value in the DLT is set to be 0, and the maximum depth sample value in the DLT is set to be the allowable maximum value (if the bit depth of depth sample is 8, the value is 255), and on the contrary, when the value of code_full_bit_depth_map_flag is 1, the coder writes the minimum value of the depth sample value and the difference between the maximum value and the minimum value in the DLT into the bitstream; for each depth sample value (not including the maximum value and the minimum value) in the range indicated by the maximum value and the minimum value, the coder writes identification information (“0” indicates exclusion from the DLT and “1” indicates inclusion in the DLT) indicating whether the depth sample values is included in the DLT or not into the bitstream.
The abovementioned two DLT coding and decoding methods have the following main limitations:
the existing methods for 3D-HEVC have the main shortcoming that a value of each element in a DLT is directly written into a bitstream without removing redundancy in data utilizing the correlation among the data elements in the DLT, which leads to excessive cost in DLT coding bits; in reference software HTM5.1 for 3D-HEVC, DLT information is signalled in Sequence Parameter Set (SPS); and a test shows that it takes a coder up to 65% of the overall bits for SPS to code the DLT information.
Although the RCBM method may effectively reduce cost of DLT information, the method needs to code a flag bit for each depth sample value between a minimum value and a maximum value to identify whether the depth value is included in a DLT or not, which would lead to much higher additional bit cost when there exist more non-DLT numerical values between the minimum value and the maximum value.